// 导入request请求工具类
import {
  getBaseUrl,
  requestUtil,
  getWxLogin,
  getUserProfile
} from '../../utils/requestUtil.js';
Page({

  /**
   * 页面的初始数据
   */
  data: {
      address: {},
      baseUrl: '',
      cart: [],
      totalPrice: 0,
      totalNum: 0,
      showPaymentModal: false // 新增，控制支付模态框显示隐藏
  },

  // 点击 获取收货地址
  handleChooseAddress() {
      wx.chooseAddress({
          success: (result) => {
              console.log(result);
              wx.setStorageSync('address', result)
          },
      })
  },

  // 新增点击跳转方法
  navigateToAddressPage: function () {
      wx.navigateTo({
          url: '/pages/address/index' // 请根据实际路径修改
      });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
      const baseUrl = getBaseUrl();
      this.setData({
          baseUrl
      });
      // 去掉获取默认地址的逻辑，直接从缓存读取地址
      this.loadAddressFromCache();
  },

  // 从缓存加载地址
  // loadAddressFromCache() {
  //     const address = wx.getStorageSync('address');
  //     if (address && Object.keys(address).length > 0) {
  //         this.setData({
  //             address
  //         });
  //     }
  // },

  loadAddressFromCache() {
    const address = wx.getStorageSync('address');
    console.log('缓存中的地址数据:', address);
    if (address && Object.keys(address).length > 0) {
        this.setData({
            address
        });
    }
},

  //订单支付
  async handleOrderPay() {
      this.setData({
          showPaymentModal: true
      });
  },

  // 处理支付确认（点击模态框确定按钮）
  handlePaymentConfirmed() {
      // 获取token
      const token = wx.getStorageSync('token');
      // 如果不存在token就执行下面，就是不存在用户信息
      if (!token) {
          Promise.all([getWxLogin(), getUserProfile()]).then((res) => {
              console.log(res[0].code);
              console.log(res[1].userInfo.nickName, res[1].userInfo.avatarUrl);
              let loginParam = {
                  code: res[0].code,
                  nickName: res[1].userInfo.nickName,
                  avatarUrl: res[1].userInfo.avatarUrl
              }
              console.log(loginParam);
              wx.setStorageSync('userInfo', res[1].userInfo);
              this.wxlogin(loginParam);
          })
      } else {
          console.log("token存在：" + token);
          // 创建订单
          this.createOrder().then(() => { }).catch((error) => {
              console.log("创建订单出错:", error);
          });
      }
      this.setData({
          showPaymentModal: false
      });
  },

  // 处理支付取消（点击模态框取消按钮）
  handlePaymentCancelled() {
      this.setData({
          showPaymentModal: false
      });
  },

  // 请求后端获取用户token
  async wxlogin(loginParam) {
      const result = await requestUtil({
          url: "/user/wxlogin",
          data: loginParam,
          method: "post"
      });
      console.log(result);
      const token = result.token;
      if (result.code === 0) {
          //存储token到缓存
          wx.setStorageSync('token', token);
          // 创建订单
          console.log("创建订单");
          this.createOrder();
      }
  },

  // 创建订单，数据发送到后端并返回订单号
  async createOrder() {
      try {
          // 总结
          const totalPrice = this.data.totalPrice;
          // 地址，省市县
          const address = this.data.address.address + this.data.address.detailInfo;
          // 收货人
          const consignee = this.data.address.userName;
          // 联系电话
          const telNumber = this.data.address.telNumber;
          let goods = [];
          this.data.cart.forEach(v => goods.push({
              goodsId: v.id,
              goodsNumber: v.num,
              goodsPrice: v.price,
              goodsName: v.name,
              goodsPic: v.proPic
          }))

          const orderParam = {
              totalPrice,
              address,
              consignee,
              telNumber,
              goods
          }
          const res = await requestUtil({
              url: "/my/order/create",
              method: "POST",
              data: orderParam
          });
          console.log("orderNo=" + res.orderNo);

          // 删除缓存中，已经支付的商品
          let newCart = wx.getStorageSync('cart').filter(v =>!v.checked); // 将 filter 方法返回的新数组赋值给 newCart
          wx.setStorageSync('cart', newCart);
          wx.showLoading({
              title: '支付成功',
              icon: 'none'
          })

          wx.navigateTo({
              url: '/pages/order/index?type=0'
          })

      } catch (error) {
          console.log(error);
          wx.showLoading({
              title: '支付失败',
              icon: 'none'
          })
      }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    console.log("show");
    // 从缓存获取地址
    this.loadAddressFromCache();

    // 处理购物车数据
    let cart = wx.getStorageSync('cart') || [];
    cart = cart.filter(v => v.checked);
    let totalPrice = 0;
    let totalNum = 0;
    cart.forEach(v => {
        totalPrice += v.price * v.num;
        totalNum += v.num
    });
    // 合计时保留两位小数
    totalPrice = parseFloat(totalPrice.toFixed(2));
    this.setData({
        cart,
        totalNum,
        totalPrice
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
});